<?php

use App\Models\User;
use Illuminate\Support\Facades\Auth;

return [
    // 页面标题
    'title'       => '用户',

    // 模型单数，用作页面「新建 $single」
    'single'      => '用户',

    // 数据模型，用作数据的 CRUD
    'model'       => User::class,

    // 设置当前页面的访问权限，通过返回布尔值来控制权限。
    // 返回 True 即通过权限验证，False 则无权限访问并从 Menu 中隐藏
    'permission'  => function ()
    {
        return Auth::user()->can('manage_users');
    },

    // 字段负责渲染「数据表格」，由无数的「列」组成
    'columns'     => [
        'id',

        'avatar' => [
            'title' => '头像',

            'output'   => function ($avatar, $model) {
                return empty($avatar) ? 'N/A' : '<img src="' . $avatar . '" width="40">';
            },

            // 是否允许排序
            'sortable' => false,
        ],

        'name' => [
            'title'    => '用户名',
            'sortable' => false,
            'output'   => function ($name, $model) {
                return '<a href="/users/' . $model->id . '" target=_blank>' . $name . '</a>';
            },
        ],

        'email' => [
            'title' => '邮箱',
        ],

        'operation' => [
            'title'    => '管理',
            'sortable' => false,
        ],
    ],

    // 「模型表单」设置项
    'edit_fields' => [
        'name'     => [
            'title' => '用户名',
        ],
        'email'    => [
            'title' => '邮箱',
        ],
        'password' => [
            'title' => '密码',

            // 表单使用 input 类型 password
            'type'  => 'password',
        ],
        'avatar'   => [
            'title' => '用户头像',

            'type'     => 'image',

            // 图片上传必须设置图片存放路径
            'location' => public_path() . '/uploads/images/avatars/',
        ],
        'roles'    => [
            'title'      => '用户角色',
            // 指定数据的类型为关联模型
            'type'       => 'relationship',

            // 关联模型的字段，用来关联显示
            'name_field' => 'name',
        ],
    ],

    // 「数据过滤」设置
    'filters'     => [
        'id'   => [
            'title' => '用户 ID',
        ],
        'name' => [
            'title' => '用户名',
        ],

        'email' => [
            'title' => '邮箱',
        ],
    ],
];
